package api

import (
	"fmt"
	"gvb-server/global"
	"gvb-server/logic"
	"gvb-server/utils"
	"os"
	"path"

	"github.com/gin-gonic/gin"
)

// UploadImage 文件上传
// @Tags 资源管理
// @Summary 文件上传
// @Description 多文件上传，兼容单个
// @Param data formData file true "文件必须"	// 上传文件必须
// @Produce application/json
// @Router /api/Images [put]
// @Success 200 {object} utils.Response{}
func (i ImageUpload) UploadImage(c *gin.Context) {
	form, err := c.MultipartForm()
	if err != nil {
		utils.Fail("", err.Error(), c)
		return
	}

	files, ok := form.File["image"]
	if !ok {
		utils.Fail("", "文件不存在", c)
		return
	}

	var uRs []utils.UploadRes

	// 检查文件夹是否存在
	//pathList := strings.Split(global.Config.Upload.Path, "/")
	//fmt.Println(pathList)
	//fmt.Println(pathList[0])
	//fmt.Println(pathList[1])
	//utils.Success(uRs, "", c)
	//return

	fileBash := global.Config.Upload.Path
	filePath := path.Join(fileBash)

	if _, err := os.Stat(filePath); os.IsNotExist(err) {
		// 文件夹不存在，创建文件夹
		err := os.MkdirAll(filePath, os.ModePerm)
		if err != nil {
			fmt.Println("创建文件夹失败：", err)
			utils.Fail("", "创建文件夹失败", c)
			return
		}
	}

	for _, file := range files {
		fmt.Println("file========================>")
		fmt.Println(file)
		resLogic := logic.Upload(file, c, fileBash, filePath, 1)
		uRs = append(uRs, resLogic)
	}
	utils.Success(uRs, "", c)
}

func (i ImageUpload) UploadImageXcx(c *gin.Context) {

	// 获取文件
	// file, err := c.FormFile("avatar") // "file" 是前端上传时设置的 name
	// if err != nil {
	// 	utils.Fail("", "Upload failed: %s"+err.Error(), c)
	// 	return
	// }

	form, err := c.MultipartForm()
	if err != nil {
		utils.Fail("", err.Error(), c)
		return
	}

	files, ok := form.File["avatar"]
	if !ok {
		utils.Fail("", "文件不存在", c)
		return
	}

	var uRs []utils.UploadRes

	fileBash := global.Config.Upload.Path
	filePath := path.Join(fileBash)

	if _, err := os.Stat(filePath); os.IsNotExist(err) {
		// 文件夹不存在，创建文件夹
		err := os.MkdirAll(filePath, os.ModePerm)
		if err != nil {
			fmt.Println("创建文件夹失败：", err)
			utils.Fail("", "创建文件夹失败", c)
			return
		}
	}

	for _, file := range files {
		fmt.Println("file========================>")
		fmt.Println(file)
		resLogic := logic.Upload(file, c, fileBash, filePath, 2)
		uRs = append(uRs, resLogic)
	}
	utils.Success(uRs, "", c)

}
